home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / Libraries / SAT 2.3b4 / Demo ƒ / HeartQuest demo ƒ / sPoints.p < prev   
Text File  |  1994-11-02  |  1KB  |  61 lines

  1. {===============================================}
  2. {================= Point sprite unit ================}
  3. {===============================================}
  4.  
  5. { Example file for Ingemars Sprite Animation Toolkit. }
  6. { © Ingemar Ragnemalm 1992 }
  7. { See doc files for legal terms for using this code. }
  8.  
  9. unit sPoints;
  10.  
  11. { Sprite unit. A Sprite unit should include the following routines:}
  12. { Init-procedure, that initializes private bitmaps}
  13. { Setup-procedure, that sets variables other than the standard ones set by MakeSprite }
  14. { Handle-procedure, to be called once per iteration until the sprite dies }
  15. { Hittask-procedure (optional), for advanced collission handling. }
  16.  
  17. { This object is a non-moving, flashing number, used to indicate that the player}
  18. { has caught a bonus object. }
  19.  
  20. interface
  21.  
  22.     uses
  23. {$IFC UNDEFINED THINK_PASCAL}
  24.         Types, Quickdraw,
  25. {$ENDC}
  26.         SAT, GameGlobals;
  27.  
  28.     procedure InitPoints;
  29.     procedure SetupPoints (mp: SpritePtr);
  30.     procedure HandlePoints (me: SpritePtr);
  31.  
  32. implementation
  33.  
  34.     var
  35.         PointsFace, fPointsFace: FacePtr;
  36.  
  37.     procedure InitPoints;
  38.     begin
  39.         fPointsFace := SATGetFace(132);
  40.         PointsFace := SATGetFace(131);
  41.     end;
  42.  
  43.     procedure SetupPoints (mp: SpritePtr);
  44.     begin
  45.         mp^.face := PointsFace;
  46.         mp^.task := @HandlePoints;
  47.     end;
  48.  
  49.     procedure HandlePoints (me: SpritePtr);
  50.     begin
  51.         me^.mode := me^.mode + 1;
  52.         if (me^.mode > 32) or (band(me^.mode, 8) = 0) then
  53.             me^.face := PointsFace
  54.         else
  55.             me^.face := fPointsFace;
  56.  
  57.         if me^.mode > 60 then
  58.             me^.task := nil;
  59.     end;
  60.  
  61. end.